Bandwidth and storage are important factors in the transmission and use of information in a network. If there is adequate bandwidth between a client and a server, the client can retrieve any information from the server in real-time. For example, a client can watch a video such as a 2 hour long MPEG coded VCR-quality video (1.5 Mbps) stored on a server in the network in real-time without requiring any storage or worrying about congestion, provided a bandwidth of 1.5 Mbps is available on a continuous basis. The problem becomes more complex, however, if there is no guarantee of the availability of the required bandwidth. In addition, congestion in the network can cause the available bandwidth to be significantly lower than the sustained bandwidth required for playing the video. One way of avoiding the bandwidth problem is by downloading the entire video at the client and playing the video locally.
Two ways of dealing with network traffic when a fast response time is desired such as streaming media in real-time are either to have plenty of bandwidth or to have plenty of storage, or both. In practicality, neither approach is feasible. First, bandwidth presently cannot be guaranteed in communication networks such as the Internet (without QOS support). Second, downloading an entire video may require an enormous amount of storage which the client may not have available. For example, the 2-hour MPEG video requires a storage of 1.35 gigabytes. Thus, a practical solution is to trade-off some storage for bandwidth.
Although the concept of duality between storage and bandwidth is present in a real-time streaming example, it holds true for any kind of traffic when fast response time is required. For example, when browsing the World Wide Web (WWW), when a client clicks on a button and tries to retrieve an object, it may take a long time to retrieve the object if the object size is large and the available bandwidth is small. However, if the object is stored close to the end-user, the end-user can retrieve it in a significantly shorter period of time.
To attain the objective of faster response time, selected objects from a server need to be replicated in caching servers close to the end-user. Then the end-user can retrieve the objects from the nearby caching servers rather than from the original server. There must be, however, consistent and reliable replication of objects. There is therefore a need for a protocol which provides consistent replication of objects in caching servers.